/**
 * 真题描述：给你两个有序整数数组 nums1 和 nums2，
 * 请你将 nums2 合并到 nums1 中，使 nums1 成为一个有序数组。
 * 说明:
 *   初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间（空间大小大于或等于 m + n）来保存 nums2 中的元素。
 */
 let nums1 = [1,2,3,0,0,0], m = 3, 
     nums2 = [2,5,6], n = 3;



/**
 * 双指针遍历 从后往前遍历， 比较大小
 * 因为本身就是排序数组，最后面最大， 将大的值放在目标数组最后
 * 注意：
 *    两个数组不一定等长
 *    如果较长的数组
 * 
 * 
 * 
 */
function mergeArr (nums1, m, nums2, n) {
  // 定义双指针
  let i = m - 1, j = n - 1, 
      l = m + n -1 // 最长的数组的长度

  // 两个指针同时移动
  while (i >= 0 && j >= 0) {
    // 判断每次 移动的时候两次的值， 将大的值放在长数组末
    if(nums1[i] > nums2[j]) {
      nums1[l] = nums1[i]
      i-- // 指针前移
      l--
    } else {
      nums1[l] = nums2[j]
      j--
      l--
    }
  }

  // 当有一方数组已经遍历完成 zhel
  while (j >= 0) {
    nums1[l] = nums2[j]
    j--
    l--
  }
   
}
mergeArr(nums1, m, nums2, n)
console.log(nums1)
